{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Matplotlib\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.cm import get_cmap\n",
    "from matplotlib import animation\n",
    "\n",
    "import seaborn as sns\n",
    "import numpy as np\n",
    "sns.set(rc={\"figure.figsize\": (10, 10)})\n",
    "\n",
    "# Break from default darkgrid for better printing on paper\n",
    "sns.set_style(\"whitegrid\")\n",
    "\n",
    "# External Includes\n",
    "\n",
    "# Internal Includes\n",
    "from rfml.ptradio import RRC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "rrc = RRC(alpha=0.35, sps=8, filter_span=8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "taps = rrc._get_impulse_response(alpha=0.35, sps=8, filter_span=8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "sample_num = np.arange(len(taps)) - 8*8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1,1, figsize=(10, 5))\n",
    "\n",
    "ax.stem(sample_num, taps)\n",
    "ax.set_title(\"RRC Impulse Response\", fontsize=16, fontweight=\"bold\", loc=\"left\")\n",
    "ax.set_ylabel(\"Amplitude\")\n",
    "ax.set_xlabel(\"Sample Number\")\n",
    "ax.set_xlim([-64, 64])\n",
    "\n",
    "fig.savefig(\"/home/bflowers/rrc.pdf\", format=\"pdf\", transparent=True)\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
